import { ipcMain, dialog, app } from 'electron'

/**
 * 设置 IPC 处理器
 * 处理渲染进程发送的各种请求
 */
export function setupIpcHandlers(): void {
  // 获取应用信息
  ipcMain.handle('app:get-version', () => {
    return app.getVersion()
  })

  ipcMain.handle('app:get-name', () => {
    return app.getName()
  })

  ipcMain.handle('app:get-path', (event, name: string) => {
    return app.getPath(name as any)
  })

  // 文件对话框
  ipcMain.handle('dialog:open-directory', async () => {
    const result = await dialog.showOpenDialog({
      title: '选择要导入的文件夹',
      properties: ['openDirectory', 'multiSelections'],
      message: '选择包含照片的文件夹'
    })
    
    return {
      canceled: result.canceled,
      filePaths: result.filePaths
    }
  })

  ipcMain.handle('dialog:show-message', async (event, options: any) => {
    const result = await dialog.showMessageBox(options)
    return result
  })

  ipcMain.handle('dialog:show-error', async (event, title: string, content: string) => {
    dialog.showErrorBox(title, content)
  })

  // 文件系统操作
  ipcMain.handle('fs:scan-directory', async (event, directoryPath: string) => {
    // 这里将调用核心模块的文件扫描功能
    console.log('扫描目录:', directoryPath)
    // TODO: 实现文件扫描逻辑
    return []
  })

  // 数据库操作
  ipcMain.handle('db:get-photos', async (event, options: any) => {
    // 这里将调用核心模块的数据库查询功能
    console.log('获取照片列表:', options)
    // TODO: 实现数据库查询逻辑
    return []
  })

  ipcMain.handle('db:import-photos', async (event, photos: any[]) => {
    // 这里将调用核心模块的照片导入功能
    console.log('导入照片:', photos.length)
    // TODO: 实现照片导入逻辑
    return { success: true, count: photos.length }
  })

  // 缩略图生成
  ipcMain.handle('thumbnail:generate', async (event, photoPath: string, size: number) => {
    // 这里将调用核心模块的缩略图生成功能
    console.log('生成缩略图:', photoPath, size)
    // TODO: 实现缩略图生成逻辑
    return null
  })

  // 元数据提取
  ipcMain.handle('metadata:extract', async (event, photoPath: string) => {
    // 这里将调用核心模块的元数据提取功能
    console.log('提取元数据:', photoPath)
    // TODO: 实现元数据提取逻辑
    return {}
  })

  console.log('IPC 处理器已设置完成')
}